package sjtu.rfid.rri.services.ale;

import java.util.List;

import javax.jws.WebService;

import sjtu.rfid.rri.services.ale.exception.DuplicateNameException;
import sjtu.rfid.rri.services.ale.exception.NoSuchNameException;
import sjtu.rfid.rri.services.ale.logicalreader.LRProperty;
import sjtu.rfid.rri.services.ale.logicalreader.LRSpec;

@WebService
public interface ALELR {
	void define(String name, LRSpec spec) throws DuplicateNameException;

	void update(String name, LRSpec spec) throws NoSuchNameException;

	void undefine(String name) throws NoSuchNameException;

	List<String> getLogicalReaderNames();

	LRSpec getLRSpec(String name) throws NoSuchNameException;

	void addReaders(String name, List<String> readers)
			throws NoSuchNameException;

	void setReaders(String name, List<String> readers)
			throws NoSuchNameException;

	void removeReaders(String name, List<String> readers)
			throws NoSuchNameException;

	void setProperties(String name, List<LRProperty> properties)
			throws NoSuchNameException;

	String getPropertyValue(String name, String propertyName)
			throws NoSuchNameException;

	String getStandardVersion();

	String getVendorVersion();

	List<String> getReaderIDs(List<String> logicNames)
			throws NoSuchNameException;
}
